#include <iostream>
#include <queue>
#include <vector>
#include <pthread.h>
#include <functional>
#include "Log.hpp"
#include "Thread.hpp"
#include "LockGuard.hpp"
static int defaulnum=5;
class ThreadData{
 public:


};
template<class T>
class ThreadPool
{
    public:
    ThreadPool(int thread_num=defaulnum):_thread_num(thread_num)
    {
        pthread_mutex_init(&_mutex,nullptr);
        pthread_cond_init(&_cond,nullptr);
    }
    bool start()
    {
          for(int i=0;i<_thread_num;i++){

          
           Thread<ThreadData> t();
           t.start();
          }
    }
    void push(const T&in)
    {
       
    }
    ~ThreadPool()
    {
        pthread_mutex_destroy(&_mutex);
        pthread_cond_destroy(&_cond);
    }
    private:
    std::queue<T> q;
    std::vector<Thread<ThreadData>>;
    int _thread_num;
    pthread_mutex_t _mutex;
    pthread_cond_t _cond;
};